{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "source": [
        "from IPython.display import Image, display\n",
        "\n",
        "# Display the image\n",
        "display(Image(\"/content/open ai swarm agent.png\",width=800, height=500))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 517
        },
        "id": "VGhU4NerdElP",
        "outputId": "84201555-997f-4442-a7dd-b0cac20227f2"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<IPython.core.display.Image object>"
            ]
          },
          "metadata": {
            "image/png": {
              "width": 800,
              "height": 500
            }
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": true,
        "id": "l7DcfOpivHea",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "b675f3aa-a949-4799-e9be-c0cde420c351"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n",
            "  Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n",
            "  Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n"
          ]
        }
      ],
      "source": [
        "!pip install -q git+https://github.com/openai/swarm.git"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "os.environ['OPENAI_API_KEY'] = 'YOUR OPENAI API KEY'"
      ],
      "metadata": {
        "id": "VnJcrzLEvdid"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "##Creating Agents and Handoffs"
      ],
      "metadata": {
        "id": "Lsa0xUJJeuXo"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from swarm import Swarm, Agent\n",
        "\n",
        "def handoff_to_weather_agent():\n",
        "    \"\"\"Transfer the task to the weather agent.\"\"\"\n",
        "    print(\"Handing off to the weather agent.\")\n",
        "    return weather_agent\n",
        "\n",
        "def handoff_to_math_agent():\n",
        "    \"\"\"Transfer the task to the math agent.\"\"\"\n",
        "    print(\"Handing off to the math agent.\")\n",
        "    return math_agent\n",
        "\n",
        "weather_agent = Agent(\n",
        "    name=\"Weather Agent\",\n",
        "    instructions=\"You handle weather-related queries. for other queries transfer to other agents\",\n",
        "    functions=[handoff_to_math_agent]\n",
        ")\n",
        "\n",
        "\n",
        "math_agent = Agent(\n",
        "    name=\"Math Agent\",\n",
        "    instructions=\"You handle only mathematical queries.for other queries transfer to other agents\",\n",
        "    functions=[handoff_to_weather_agent]\n",
        ")"
      ],
      "metadata": {
        "id": "OQg2KeJswOde"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "client = Swarm()"
      ],
      "metadata": {
        "id": "KNNoUR8KxH_G"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "messages = [{\"role\": \"user\", \"content\": \"2+2\"}]\n",
        "response = client.run(agent=math_agent, messages=messages)\n",
        "print(response)\n",
        "print(\"=============\")\n",
        "print(\"=============\")\n",
        "print(response.messages[-1][\"content\"])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Kaykcggwd_tQ",
        "outputId": "a0dbd6a8-24b9-4903-e533-21f32c0ae260"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "messages=[{'content': '\\\\(2 + 2 = 4\\\\)', 'refusal': None, 'role': 'assistant', 'audio': None, 'function_call': None, 'tool_calls': None, 'sender': 'Math Agent'}] agent=Agent(name='Math Agent', model='gpt-4o', instructions='You handle only mathematical queries.for other queries transfer to other agents', functions=[<function handoff_to_weather_agent at 0x7d85c06e7010>], tool_choice=None, parallel_tool_calls=True) context_variables={}\n",
            "=============\n",
            "=============\n",
            "\\(2 + 2 = 4\\)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "messages = [{\"role\": \"user\", \"content\": \"what is indias weather\"}]\n",
        "response = client.run(agent=weather_agent, messages=messages)\n",
        "print(response)\n",
        "print(\"=============\")\n",
        "print(\"=============\")\n",
        "print(response.messages[-1][\"content\"])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "4neern4zeXyM",
        "outputId": "0bc15a15-67b9-4e22-e7e9-e0d6e3af41e4"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "messages=[{'content': \"India typically has diverse weather conditions due to its large geographical size and topographical variety. Here's a brief overview:\\n\\n1. **North India (e.g., Delhi, Punjab, Uttar Pradesh):** \\n   - Winters (December to February): Cold and dry, with temperatures dropping significantly, sometimes leading to frost in certain areas.\\n   - Summer (March to June): Very hot, with temperatures rising above 40°C in many regions, particularly in the Thar Desert.\\n   - Monsoon (June to September): Heavy rainfall, especially in the Himalayan foothills.\\n\\n2. **South India (e.g., Kerala, Tamil Nadu):** \\n   - More tropical and humid throughout the year.\\n   - Monsoon (June to November): Two monsoon periods with heavy rainfall, first the Southwest Monsoon and then the Northeast Monsoon.\\n   - Mild winters and very hot summers in inland areas.\\n\\n3. **Western India (e.g., Mumbai, Gujarat):** \\n   - Coastal humidity influences the weather.\\n   - Monsoon (June to September): Significant rain, particularly in coastal areas.\\n   - Mild winters and hot, humid summers.\\n\\n4. **Eastern India (e.g., Kolkata, Odisha):** \\n   - High humidity and significant rainfall during the monsoon season.\\n   - Winters are cool and short, while summers can be very hot.\\n\\n5. **Northeast India:**\\n   - Experiences heavy rainfall during the monsoon, some of the highest in the world.\\n   - Cooler temperatures year-round compared to the rest of the country.\\n\\nFor a more specific forecast, it would be essential to provide the exact location or city in India you are interested in. You may also want to look at local weather forecasts for current conditions.\", 'refusal': None, 'role': 'assistant', 'audio': None, 'function_call': None, 'tool_calls': None, 'sender': 'Weather Agent'}] agent=Agent(name='Weather Agent', model='gpt-4o', instructions='You handle weather-related queries. for other queries transfer to other agents', functions=[<function handoff_to_math_agent at 0x7d85bc2d1990>], tool_choice=None, parallel_tool_calls=True) context_variables={}\n",
            "=============\n",
            "=============\n",
            "India typically has diverse weather conditions due to its large geographical size and topographical variety. Here's a brief overview:\n",
            "\n",
            "1. **North India (e.g., Delhi, Punjab, Uttar Pradesh):** \n",
            "   - Winters (December to February): Cold and dry, with temperatures dropping significantly, sometimes leading to frost in certain areas.\n",
            "   - Summer (March to June): Very hot, with temperatures rising above 40°C in many regions, particularly in the Thar Desert.\n",
            "   - Monsoon (June to September): Heavy rainfall, especially in the Himalayan foothills.\n",
            "\n",
            "2. **South India (e.g., Kerala, Tamil Nadu):** \n",
            "   - More tropical and humid throughout the year.\n",
            "   - Monsoon (June to November): Two monsoon periods with heavy rainfall, first the Southwest Monsoon and then the Northeast Monsoon.\n",
            "   - Mild winters and very hot summers in inland areas.\n",
            "\n",
            "3. **Western India (e.g., Mumbai, Gujarat):** \n",
            "   - Coastal humidity influences the weather.\n",
            "   - Monsoon (June to September): Significant rain, particularly in coastal areas.\n",
            "   - Mild winters and hot, humid summers.\n",
            "\n",
            "4. **Eastern India (e.g., Kolkata, Odisha):** \n",
            "   - High humidity and significant rainfall during the monsoon season.\n",
            "   - Winters are cool and short, while summers can be very hot.\n",
            "\n",
            "5. **Northeast India:**\n",
            "   - Experiences heavy rainfall during the monsoon, some of the highest in the world.\n",
            "   - Cooler temperatures year-round compared to the rest of the country.\n",
            "\n",
            "For a more specific forecast, it would be essential to provide the exact location or city in India you are interested in. You may also want to look at local weather forecasts for current conditions.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "response.agent.name"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "id": "ppPIC1Mkr4wx",
        "outputId": "545e1957-1479-4fb7-ee7c-ddff62636c68"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'Weather Agent'"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            }
          },
          "metadata": {},
          "execution_count": 13
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Creating RAG Tool"
      ],
      "metadata": {
        "id": "6J83WHEx4qCy"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "!pip -q install langchain langchain-chroma langchain-openai langchain-community pypdf sentence-transformers docx2txt"
      ],
      "metadata": {
        "id": "m63flywZ8SmP",
        "collapsed": true
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "from langchain_community.document_loaders import PyPDFLoader, Docx2txtLoader\n",
        "from langchain_text_splitters import RecursiveCharacterTextSplitter\n",
        "from typing import List\n",
        "from langchain_core.documents import Document\n",
        "import os\n",
        "\n",
        "def load_documents(folder_path: str) -> List[Document]:\n",
        "    documents = []\n",
        "    for filename in os.listdir(folder_path):\n",
        "        print(filename)\n",
        "        file_path = os.path.join(folder_path, filename)\n",
        "        if filename.endswith('.pdf'):\n",
        "            loader = PyPDFLoader(file_path)\n",
        "        elif filename.endswith('.docx'):\n",
        "            loader = Docx2txtLoader(file_path)\n",
        "        else:\n",
        "            print(f\"Unsupported file type: {filename}\")\n",
        "            continue\n",
        "        documents.extend(loader.load())\n",
        "    return documents\n",
        "\n",
        "folder_path = \"/content/docs\"\n",
        "documents = load_documents(folder_path)\n",
        "documents"
      ],
      "metadata": {
        "id": "GXzj73-xiCFd"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "text_splitter = RecursiveCharacterTextSplitter(\n",
        "    chunk_size=1000,\n",
        "    chunk_overlap=200,\n",
        "    length_function=len\n",
        ")\n",
        "\n",
        "splits = text_splitter.split_documents(documents)\n",
        "print(f\"Split the documents into {len(splits)} chunks.\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "9EFJzOcLjQww",
        "outputId": "7f4fd741-257f-4e82-d870-bb83e54683e1"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Split the documents into 8 chunks.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "splits[0:2]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "-X9_JUsrHV3L",
        "outputId": "86d22af8-f65c-45a0-8b3c-4a1fba1d83ee"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[Document(metadata={'source': '/content/docs/GreenGrow Innovations_ Company History.docx'}, page_content='GreenGrow Innovations was founded in 2010 by Sarah Chen and Michael Rodriguez, two agricultural engineers with a passion for sustainable farming. The company started in a small garage in Portland, Oregon, with a simple mission: to make farming more environmentally friendly and efficient.\\n\\n\\n\\nIn its early days, GreenGrow focused on developing smart irrigation systems that could significantly reduce water usage in agriculture. Their first product, the WaterWise Sensor, was launched in 2012 and quickly gained popularity among local farmers. This success allowed the company to expand its research and development efforts.\\n\\n\\n\\nBy 2015, GreenGrow had outgrown its garage origins and moved into a proper office and research facility in the outskirts of Portland. This move coincided with the development of their second major product, the SoilHealth Monitor, which used advanced sensors to analyze soil composition and provide real-time recommendations for optimal crop growth.'),\n",
              " Document(metadata={'source': '/content/docs/GreenGrow Innovations_ Company History.docx'}, page_content=\"The company's breakthrough came in 2018 with the introduction of the EcoHarvest System, an integrated solution that combined smart irrigation, soil monitoring, and automated harvesting techniques. This system caught the attention of large-scale farmers across the United States, propelling GreenGrow to national prominence.\\n\\n\\n\\nToday, GreenGrow Innovations employs over 200 people and has expanded its operations to include offices in California and Iowa. The company continues to focus on developing sustainable agricultural technologies, with ongoing projects in vertical farming, drought-resistant crop development, and AI-powered farm management systems.\\n\\n\\n\\nDespite its growth, GreenGrow remains committed to its original mission of promoting sustainable farming practices. The company regularly partners with universities and research institutions to advance the field of agricultural technology and hosts annual conferences to share knowledge with farmers and other industry professionals.\")]"
            ]
          },
          "metadata": {},
          "execution_count": 16
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from langchain_community.embeddings.sentence_transformer import SentenceTransformerEmbeddings\n",
        "\n",
        "embedding_function = SentenceTransformerEmbeddings(model_name=\"all-MiniLM-L6-v2\")\n",
        "\n",
        "from langchain_chroma import Chroma\n",
        "\n",
        "collection_name = \"my_collection\"\n",
        "vectorstore = Chroma.from_documents(\n",
        "    collection_name=collection_name,\n",
        "    documents=splits,\n",
        "    embedding=embedding_function,\n",
        "    persist_directory=\"./chroma_db_1\"\n",
        ")\n",
        "print(\"Vector store created and persisted to './chroma_db_1'\")\n"
      ],
      "metadata": {
        "collapsed": true,
        "id": "lWd5RocqjiMj"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "retriever = vectorstore.as_retriever(search_kwargs={\"k\": 2})\n",
        "retriever_results = retriever.invoke(\"When was GreenGrow Innovations founded?\")\n",
        "retriever_results"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "aCujjMoJj21F",
        "outputId": "4a7f047c-b90c-4340-a38b-1a6822e4249c"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "[Document(metadata={'source': '/content/docs/GreenGrow Innovations_ Company History.docx'}, page_content='GreenGrow Innovations was founded in 2010 by Sarah Chen and Michael Rodriguez, two agricultural engineers with a passion for sustainable farming. The company started in a small garage in Portland, Oregon, with a simple mission: to make farming more environmentally friendly and efficient.\\n\\n\\n\\nIn its early days, GreenGrow focused on developing smart irrigation systems that could significantly reduce water usage in agriculture. Their first product, the WaterWise Sensor, was launched in 2012 and quickly gained popularity among local farmers. This success allowed the company to expand its research and development efforts.\\n\\n\\n\\nBy 2015, GreenGrow had outgrown its garage origins and moved into a proper office and research facility in the outskirts of Portland. This move coincided with the development of their second major product, the SoilHealth Monitor, which used advanced sensors to analyze soil composition and provide real-time recommendations for optimal crop growth.'),\n",
              " Document(metadata={'source': '/content/docs/GreenGrow Innovations_ Company History.docx'}, page_content=\"The company's breakthrough came in 2018 with the introduction of the EcoHarvest System, an integrated solution that combined smart irrigation, soil monitoring, and automated harvesting techniques. This system caught the attention of large-scale farmers across the United States, propelling GreenGrow to national prominence.\\n\\n\\n\\nToday, GreenGrow Innovations employs over 200 people and has expanded its operations to include offices in California and Iowa. The company continues to focus on developing sustainable agricultural technologies, with ongoing projects in vertical farming, drought-resistant crop development, and AI-powered farm management systems.\\n\\n\\n\\nDespite its growth, GreenGrow remains committed to its original mission of promoting sustainable farming practices. The company regularly partners with universities and research institutions to advance the field of agricultural technology and hosts annual conferences to share knowledge with farmers and other industry professionals.\")]"
            ]
          },
          "metadata": {},
          "execution_count": 18
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from langchain_core.prompts import ChatPromptTemplate\n",
        "from langchain.schema.runnable import RunnablePassthrough\n",
        "from langchain_core.output_parsers import StrOutputParser\n",
        "from langchain_openai import ChatOpenAI\n",
        "\n",
        "llm = ChatOpenAI(model=\"gpt-4o-mini\")\n",
        "\n",
        "\n",
        "def retrieve_and_generate(question):\n",
        "  print(\"Calling retrieve_and_generate\")\n",
        "  template = \"\"\"Answer the question based only on the following context:\n",
        "  {context}\n",
        "  Question: {question}\n",
        "  Answer: \"\"\"\n",
        "\n",
        "  prompt = ChatPromptTemplate.from_template(template)\n",
        "\n",
        "  def docs2str(docs):\n",
        "      return \"\\n\\n\".join(doc.page_content for doc in docs)\n",
        "\n",
        "  rag_chain = (\n",
        "      {\"context\": retriever | docs2str, \"question\": RunnablePassthrough()}\n",
        "      | prompt\n",
        "      | llm\n",
        "      | StrOutputParser()\n",
        "  )\n",
        "  response = rag_chain.invoke(question)\n",
        "  return response\n",
        "\n",
        "question = \"When was GreenGrow Innovations founded?\"\n",
        "result = retrieve_and_generate(question)\n",
        "\n",
        "print(f\"Question: {question}\")\n",
        "print(f\"Answer: {result}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "jqMJu2PokicD",
        "outputId": "e965b534-76e8-4695-b3e8-db814f2dd4b3"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Calling retrieve_and_generate\n",
            "Question: When was GreenGrow Innovations founded?\n",
            "Answer: GreenGrow Innovations was founded in 2010.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "##Creating NL2SQL Tool"
      ],
      "metadata": {
        "id": "JDyGr1PtfNH0"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "!wget https://github.com/lerocha/chinook-database/raw/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite"
      ],
      "metadata": {
        "id": "kP5AjefF3cfF",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "64cb1cf5-f269-4565-d49d-eadc80dcc3a0"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "--2024-10-29 14:39:23--  https://github.com/lerocha/chinook-database/raw/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite\n",
            "Resolving github.com (github.com)... 140.82.114.3\n",
            "Connecting to github.com (github.com)|140.82.114.3|:443... connected.\n",
            "HTTP request sent, awaiting response... 302 Found\n",
            "Location: https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite [following]\n",
            "--2024-10-29 14:39:23--  https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sqlite\n",
            "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.111.133, 185.199.108.133, ...\n",
            "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.\n",
            "HTTP request sent, awaiting response... 200 OK\n",
            "Length: 1067008 (1.0M) [application/octet-stream]\n",
            "Saving to: ‘Chinook_Sqlite.sqlite’\n",
            "\n",
            "Chinook_Sqlite.sqli 100%[===================>]   1.02M  --.-KB/s    in 0.07s   \n",
            "\n",
            "2024-10-29 14:39:24 (13.9 MB/s) - ‘Chinook_Sqlite.sqlite’ saved [1067008/1067008]\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!mv Chinook_Sqlite.sqlite Chinook.db"
      ],
      "metadata": {
        "id": "m3s5oO6b3guc"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "from langchain_community.utilities import SQLDatabase\n",
        "\n",
        "db = SQLDatabase.from_uri(\"sqlite:///Chinook.db\")"
      ],
      "metadata": {
        "id": "3i3OP-lm3jdo"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n",
        "os.environ[\"LANGCHAIN_API_KEY\"] = \"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\"\n",
        "os.environ[\"LANGCHAIN_PROJECT\"] = \"openai-swarm\""
      ],
      "metadata": {
        "id": "-4BJ1opvTHPo"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def clean_sql_query(markdown_query):\n",
        "    # Split the query into lines\n",
        "    lines = markdown_query.strip().split('\\n')\n",
        "\n",
        "    # Remove markdown syntax lines\n",
        "    cleaned_lines = []\n",
        "    for line in lines:\n",
        "        # Skip lines that only contain backticks and optional language identifier\n",
        "        if line.strip().startswith('```') or line.strip() == 'sql':\n",
        "            continue\n",
        "        cleaned_lines.append(line)\n",
        "\n",
        "    # Join the remaining lines and clean up extra whitespace\n",
        "    cleaned_query = ' '.join(cleaned_lines).strip()\n",
        "\n",
        "    # Remove any remaining backticks\n",
        "    cleaned_query = cleaned_query.replace('`', '')\n",
        "\n",
        "    # Ensure semicolon at the end if not present\n",
        "    if not cleaned_query.strip().endswith(';'):\n",
        "        cleaned_query += ';'\n",
        "\n",
        "    return cleaned_query\n",
        "\n",
        "# Example usage\n",
        "markdown_query = '''```sql\n",
        "SELECT * FROM table;\n",
        "```'''\n",
        "\n",
        "cleaned_query = clean_sql_query(markdown_query)\n",
        "print(cleaned_query)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "rLIyX4fBPpDE",
        "outputId": "714d838d-2a69-49c3-8364-a9a82c9fcfef"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "SELECT * FROM table;\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from langchain_core.prompts import ChatPromptTemplate\n",
        "sql_prompt = ChatPromptTemplate.from_messages(\n",
        "    [\n",
        "        (\"system\", \"You are a SQLite expert expert. Given an input question, create a syntactically correct SQL query to run. Unless otherwise specificed.\\n\\nHere is the relevant table info: {table_info}\\n\\n Use max {top_k} rows\"),\n",
        "        (\"human\", \"{input}\"),\n",
        "    ]\n",
        ")"
      ],
      "metadata": {
        "id": "LK-ezqQ5VXkU"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "Bbw85HHJVhk1"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "from langchain.chains import create_sql_query_chain\n",
        "from langchain_community.tools.sql_database.tool import QuerySQLDataBaseTool\n",
        "from operator import itemgetter\n",
        "import re\n",
        "from langchain_core.output_parsers import StrOutputParser\n",
        "from langchain_core.prompts import PromptTemplate\n",
        "from langchain_core.runnables import RunnablePassthrough, RunnableLambda\n",
        "from langchain_openai import ChatOpenAI\n",
        "llm = ChatOpenAI(model=\"gpt-4o\")\n",
        "\n",
        "def sql_response_gen(question):\n",
        "  print(\"Calling sql_response_gen\")\n",
        "  # remove_code_block_syntax = lambda text: re.sub(r\"```(sql|)\\s*(.*?)\\s*```\", r\"\\2\", text, flags=re.DOTALL)\n",
        "  execute_query = QuerySQLDataBaseTool(db=db)\n",
        "  write_query = create_sql_query_chain(llm, db,sql_prompt)\n",
        "\n",
        "  answer_prompt = PromptTemplate.from_template(\n",
        "      \"\"\"Given the following user question, corresponding SQL query, and SQL result, answer the user question.\n",
        "\n",
        "  Question: {question}\n",
        "  SQL Query: {query}\n",
        "  SQL Result: {result}\n",
        "  Answer: \"\"\"\n",
        "  )\n",
        "\n",
        "  chain = (\n",
        "      RunnablePassthrough.assign(query=write_query | RunnableLambda(clean_sql_query)).assign(\n",
        "          result=itemgetter(\"query\") | execute_query\n",
        "      )\n",
        "      | answer_prompt\n",
        "      | llm\n",
        "      | StrOutputParser()\n",
        "  )\n",
        "\n",
        "  response = chain.invoke({\"question\": question})\n",
        "  return response\n",
        "\n",
        "question = \"How many customers are there?\"\n",
        "result = sql_response_gen(question)\n",
        "\n",
        "print(f\"Question: {question}\")\n",
        "print(f\"Answer: {result}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "j7VUiXx93VDh",
        "outputId": "4b8f8e5d-4ccb-43a5-a719-9c78f2d16f8b"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Calling sql_response_gen\n",
            "Question: How many customers are there?\n",
            "Answer: There are 59 customers.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "from swarm import Swarm, Agent\n",
        "\n",
        "rag_agent = Agent(\n",
        "    name=\"RAG Agent\",\n",
        "    instructions=\"You retrieve relevant information from the knowledge base and generate responses to general queries about the.\",\n",
        "    functions=[retrieve_and_generate]\n",
        ")\n",
        "\n",
        "nl2sql_agent = Agent(\n",
        "    name=\"NL2SQL Agent\",\n",
        "    instructions=\"You handle database queries.\",\n",
        "    functions=[sql_response_gen]\n",
        ")"
      ],
      "metadata": {
        "id": "uXrbLlBRlD8i"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "central_agent = Agent(\n",
        "    name=\"Central Agent\",\n",
        "    instructions=\"Determine if the query is about general information (RAG) or a database query (NL2SQL), and route the query accordingly.\"\n",
        ")\n",
        "\n",
        "# Define handoff functions to delegate tasks to the correct agent\n",
        "def transfer_to_nl2sql():\n",
        "    print(\"Handing off to the NL2SQL Agent.\")\n",
        "    \"\"\"Transfer the task to the NL2SQL Agent for database queries.\"\"\"\n",
        "    return nl2sql_agent\n",
        "\n",
        "def transfer_to_rag():\n",
        "    print(\"Handing off to the RAG agent.\")\n",
        "    \"\"\"Transfer the task to the RAG Agent for general queries.\"\"\"\n",
        "    return rag_agent\n",
        "\n",
        "# Attach the handoff functions to the central agent\n",
        "central_agent.functions = [transfer_to_nl2sql, transfer_to_rag]"
      ],
      "metadata": {
        "id": "SobSdFVtnVeM"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "client = Swarm()\n",
        "\n",
        "# Example 1: Asking about the company\n",
        "print(\"\\n--- Example 1: Asking about the company ---\")\n",
        "messages = [{\"role\": \"user\", \"content\": \"When was GreenGrow Innovations founded?\"}]\n",
        "response = client.run(agent=central_agent, messages=messages)\n",
        "if isinstance(response, Agent):\n",
        "    selected_agent = response\n",
        "    result = selected_agent.functions\n",
        "    print(result)\n",
        "else:\n",
        "    print(response.messages[-1][\"content\"])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ud7hhK_7lxhT",
        "outputId": "c4531791-bc57-4eb2-d86a-e53ec65e9466"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "--- Example 1: Asking about the company ---\n",
            "Handing off to the RAG agent.\n",
            "Calling retrieve_and_generate\n",
            "GreenGrow Innovations was founded in 2010.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Example 2: Asking from the SQL DB\n",
        "print(\"\\n--- Example 2: Asking from the SQL DB ---\")\n",
        "messages = [{\"role\": \"user\", \"content\": \"How many employees are there\"}]\n",
        "response = client.run(agent=central_agent, messages=messages)\n",
        "if isinstance(response, Agent):\n",
        "    selected_agent = response\n",
        "    result = selected_agent.functions\n",
        "    print(result)\n",
        "else:\n",
        "    print(response.messages[-1][\"content\"])"
      ],
      "metadata": {
        "id": "creFnFdMr4_m",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "805513ff-f2d8-4f4e-db31-54deaea918f9"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            "--- Example 2: Asking from the SQL DB ---\n",
            "Handing off to the NL2SQL Agent.\n",
            "Calling sql_response_gen\n",
            "There are 8 employees.\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "M5tIdOT2b7VN"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}